#ifndef PARAFLUIDBOX_H
#define PARAFLUIDBOX_H

#include "parafluidorientedobject.h"
#include "parafluidvector.h"

#include <QDataStream>

namespace ParaFluid
{
	
	/**
	* A Box
	*/
	class Box
		: public OrientedObject
	{
		
	public:
		
		/**
		* Destructor
		*/
		virtual ~Box();
		
		/**
		* Default Constructor
		*/
		Box();
		
		/**
		* Constructor with Position, Orientation and Extent
		*/
		Box(const Vector & position, const Orientation & orientation, const Vector & Extent);
		
		/**
		* Copy Constructor
		*/
		Box(const Box & other);
		
		/**
		* Assignment Operator
		*/
		Box & operator= (const Box & rhs);
		
		/**
		* Comparison Operator
		*/
		bool operator== (const Box & rhs) const;
		
		/**
		* Extent from it's position.
		*/
		Vector extent;
		
	};
	
}

QDataStream & operator<< (QDataStream & stream, const ParaFluid::Box & box);

QDataStream & operator>> (QDataStream & stream, ParaFluid::Box & box);

#endif

